home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / arrl / biennew.src < prev    next >
Text File  |  1996-06-25  |  12KB  |  453 lines

  1. *68HC705C8 REMOTE DISPLAY
  2. *FOR TS-140 Transceiver, and other Kenwood HF Transceivers 
  3. *VERSION 4.3 (MAR. 12, 1993) (SHORTENED DISLET/WCTRL DELAYS...) 
  4. *Steven N. Bienvenu, NB5F
  5. *COPYRIGHT 1993; this program may NOT be used for commercial
  6. *purposes or sale, nor altered without express permission of the
  7. *author
  8.           
  9. *    Register Equates          
  10.           
  11. PORTA     EQU  $00       LCD DATA/CONTROL PORTS              
  12. PORTB     EQU  $01       EQUATES   
  13. DDRA      EQU  $04          
  14. DDRB      EQU  $05 
  15.                      
  16. BRATE     EQU  $0D       SCI  EQUATES 
  17. SCCR1     EQU  $0E 
  18. SCCR2     EQU  $0F 
  19. SCSR      EQU  $10 
  20. SCDAT     EQU  $11 
  21.  
  22. *    Ram Equates          
  23.           
  24. TEMPA     EQU  $51       ONE BYTE TEMPORARY STORAGE          
  25. TEMPX     EQU  $52       ONE BYTE TEMPORARY STORAGE          
  26. TEMPM     EQU  $53            "          "
  27. TEMPV     EQU  $54            "          "
  28. VFO       EQU  $55       VFO DATA BYTE, TEMP. STRG 
  29.  
  30. *    RESERVE RECEIVED DATA MEMORY AREAS 
  31.           
  32.           ORG  $60
  33.  
  34. RDATA     RMB  $28        RESERVES 40 BYTES FOR                  
  35. *                          INPUT DATA
  36.  
  37. RDATB     RMB  $D         RESERVES 13 DATA BYTES
  38.  
  39.  
  40.           ORG  $100       BEGINS PROG @ THIS ADDR          
  41.           
  42. *    SET PORT DATA BIT PATTERNS AND DIRECTIONS          
  43.           
  44. DDREX     LDA  #$FF                
  45.           STA  DDRA      PORT A ALL OUTPUTS          
  46.           STA  DDRB      PORT B ALL OUTPUTS          
  47.   
  48.          
  49. *    INITIALIZE LCD DISPLAY  
  50.                                                                  
  51.          
  52.           JSR  LCDLY     DELAY FOR DISPLAY SETUP          
  53. LCDINIT   JSR  INIT      INITIALIZE DISPLAY......          
  54.           
  55.           LDA  #$00      ASSURES BITS CLEAR
  56.           STA  VFO       FOR LATER TESTING
  57.  
  58. *    INITIALIZE SCI 
  59.  
  60. SCIINIT   LDA  #%00110000     SET BAUD RATE 4800 
  61.           STA  BRATE             ( @ 2 MHZ XTAL) 
  62.           LDA  #%01010000     SET SCCR1 TO 9 BITS 
  63.           STA  SCCR1          (GIVES XTRA STOP BIT) 
  64.           LDA  #%00001100     ENABLE SCI RX/TX            
  65.           STA  SCCR2 
  66.  
  67.  
  68.  
  69. *    COMMUNICATIONS ROUTINES 
  70.  
  71. CMD1      FCC  'IF;+'   "INFO" REQ. COMMAND STRING 
  72. CMD2      FCC  'FB;+'    VFO "B" FREQ REQ.  
  73. CMD3      FCC  'FA;+'    VFO "A" FREQ REQ.
  74. GETREDY   CLRX 
  75. SEND      LDA  CMD1,X    SEND INFO REQUEST    
  76.           CMP  #'+       END OF CMD STRING?          
  77.           BEQ  SETSTRT   THEN GET RESPONSE
  78.  
  79. SENDATA   BRCLR  7,SCSR,SENDATA 
  80.           STA    SCDAT 
  81.           INCX 
  82.           BRA  SEND
  83.                                                                  
  84.  
  85. SETSTRT   CLRX   
  86. GETDATA   BRCLR 5,SCSR,GETDATA     RDRF=1? 
  87.           LDA   SCDAT             OK, GET DATA.
  88.           CMP   #'I               CKS FOR PROPER
  89.           BEQ   GOODATA           1ST CHAR. OF STRG
  90.           BRA   GETDATA
  91. AGAIN     BRCLR 5,SCSR,AGAIN
  92.           LDA   SCDAT    
  93. GOODATA   STA   RDATA,X       
  94.           CPX   #37
  95.           BEQ   SWITCH
  96.           INCX
  97.           BRA   AGAIN
  98.          
  99. SWITCH    LDX   #32
  100.           LDA   RDATA,X
  101.           CMP   #'0
  102.           BEQ   JUMP
  103.           BRCLR 5,VFO,IFEMPTY
  104.           JMP   CON             LOADS VFO BYTE IF           
  105. IFEMPTY   LDX   #30             SPLIT IS ON  WHEN
  106.           LDA   RDATA,X         RADIO TURNED ON
  107.           STA   VFO 
  108. CON       JMP   CONTIN                    
  109. JUMP      JMP   DISPLAY
  110.  
  111. CONTIN    LDX   #30
  112.           LDA   RDATA,X
  113.           CMP   #'0
  114.           BEQ   FB        REQUESTS B IF OP FREQ=A
  115.  
  116.           CLRX
  117. SEND2     LDA   CMD3,X    REQUESTS "A"
  118.           CMP   #'+
  119.           BEQ   BEGIN
  120. SENDATA2  BRCLR 7,SCSR,SENDATA2
  121.           STA   SCDAT
  122.           INCX
  123.           BRA   SEND2
  124.  
  125. FB        CLRX
  126. SEND3     LDA   CMD2,X        REQUESTS "B"
  127.           CMP   #'+
  128.           BEQ   BEGIN
  129. SENDATA3  BRCLR 7,SCSR,SENDATA3
  130.           STA   SCDAT
  131.           INCX
  132.           BRA   SEND3
  133.  
  134. BEGIN     CLRX
  135. DATAGET   BRCLR 5,SCSR,DATAGET     NEW OP FREQ
  136.           LDA   SCDAT              DISP. ROUTINE  
  137.           STA   RDATB,X
  138.           CPX   #13
  139.           BEQ   SWAP
  140.           INCX
  141.           BRA   DATAGET
  142.  
  143. SWAP      LDX   #30
  144.           LDA   RDATA,X
  145.           CMP   VFO
  146.           BEQ   DISPLAY2      IF VFO UNCHANGED,
  147.           LDA   #$C5           PRINT SAME LOC LCD;
  148.           JSR   WCTRL         OTHERWISE, SWITCH 
  149.           JMP   BOT            LOCATIONS
  150.  
  151. DISPLAY2  LDA   #$85
  152.           JSR   WCTRL
  153. BOT       LDX   #5
  154.           LDA   RDATA,X
  155.           CMP   #'0
  156.           BEQ   BLANK
  157.           JSR   DISLET
  158. LOOP      INCX
  159.           CPX   #10
  160.           BEQ   LAST
  161.           LDA   RDATA,X
  162.           JSR   DISLET
  163.           BRA   LOOP
  164.  
  165. BLANK     LDA   #' '
  166.           JSR   DISLET
  167.           BRA   LOOP
  168.  
  169. LAST      LDA   #'.
  170.           JSR   DISLET
  171.           LDA   RDATA,X
  172.           JSR   DISLET
  173.           LDA   #'<
  174.           JSR   DISLET
  175.  
  176.           LDX   #30
  177.           LDA   RDATA,X
  178.           CMP   VFO
  179.           BEQ   DISFB         IF VFO NO CHANGE,
  180.           LDA   #$85          PRINT @ SAME SPOT;
  181.           JSR   WCTRL         OTHERWISE, SWITCH
  182.           JMP   TOP
  183.  
  184. DISFB     LDA   #$C5
  185.           JSR   WCTRL
  186. TOP       LDX   #5        
  187.           LDA   RDATB,X
  188.           CMP   #'0
  189.           BEQ   BLANK2
  190.           JSR   DISLET
  191. LOOP2     INCX
  192.           CPX   #10
  193.           BEQ   LAST2
  194.           LDA   RDATB,X
  195.           JSR   DISLET
  196.           BRA   LOOP2
  197.  
  198. BLANK2    LDA   #' '
  199.           JSR   DISLET
  200.           BRA   LOOP2
  201.  
  202. LAST2     LDA   #'.
  203.           JSR   DISLET
  204.           LDA   RDATB,X
  205.           JSR   DISLET
  206.           LDA   #' '
  207.           JSR   DISLET
  208.           JMP   MODE
  209.  
  210.  
  211. *****************************          
  212. *    SUBROUTINES            *                     
  213. *****************************          
  214.  
  215. DISPLAY   LDX   #5
  216. PRINT     LDA   #$85
  217.           JSR   WCTRL         ROUTINE CHECKS FOR 
  218.           LDA   RDATA,X       ONE OR TWO-DIGIT
  219.           CMP   #'0           MHZ, THEN PRINTS                   
  220.           BEQ   PRINT2        FREQUENCY
  221.           LDA   RDATA,X       
  222.           JSR   DISLET
  223.           INCX
  224.           LDA   RDATA,X
  225.           JSR   DISLET
  226.           LDA   #'.
  227.           JSR   DISLET
  228.  
  229. PRINTLP   INCX
  230.           CPX   #10
  231.           BEQ   MODE
  232.           LDA   RDATA,X
  233.           JSR   DISLET
  234.           BRA   PRINTLP
  235.  
  236.  
  237. PRINT2    LDA   #' '       ERASES LEADING ZERO
  238.           JSR   DISLET
  239.           INCX
  240.           LDA   RDATA,X
  241.           JSR   DISLET
  242.           LDA   #'.
  243.           JSR   DISLET
  244. PRINTLP2  INCX
  245.           CPX   #10
  246.           BEQ   MODE
  247.           LDA   RDATA,X
  248.           JSR   DISLET
  249.           BRA   PRINTLP2
  250.           
  251. MODE      LDA   #$C0
  252.           JSR   WCTRL
  253.           LDX   #29
  254.           LDA   RDATA,X       
  255.           CMP   #'1           MODE DETECTION
  256.           BEQ   LSB
  257.           CMP   #'2            AND DISPLAY
  258.           BEQ   USB
  259.           CMP   #'3
  260.           BEQ   CW
  261.           CMP   #'4
  262.           BEQ   FM
  263.           CMP   #'5
  264.           BEQ   AM
  265.           CMP   #'7
  266.           BEQ   CWN
  267.  
  268. LSB       LDA   #'L
  269.           JSR   DISLET
  270.           LDA   #'S
  271.           JSR   DISLET
  272.           LDA   #'B
  273.           JSR   DISLET
  274.           JMP   RIT
  275.           
  276. USB       LDA   #'U
  277.           JSR   DISLET
  278.           LDA   #'S
  279.           JSR   DISLET
  280.           LDA   #'B
  281.           JSR   DISLET
  282.           JMP   RIT
  283.  
  284. CW        LDA   #'C
  285.           JSR   DISLET
  286.           LDA   #'W
  287.           JSR   DISLET
  288.           LDA   #' '
  289.           JSR   DISLET
  290.           JMP   RIT
  291.  
  292. FM        LDA   #'F
  293.           JSR   DISLET
  294.           LDA   #'M
  295.           JSR   DISLET
  296.           LDA   #' '
  297.           JSR   DISLET
  298.           JMP   RIT
  299.  
  300. AM        LDA   #'A
  301.           JSR   DISLET
  302.           LDA   #'M
  303.           JSR   DISLET
  304.           LDA   #' '
  305.           JSR   DISLET
  306.           JMP   RIT
  307.  
  308. CWN       LDA   #'C
  309.           JSR   DISLET
  310.           LDA   #'W
  311.           JSR   DISLET
  312.           LDA   #'N
  313.           JSR   DISLET
  314.           JMP   RIT
  315.  
  316. RIT       LDA   #$8D       DISPLAYS "RIT" IF ON
  317.           JSR   WCTRL
  318.           LDX   #23
  319.           LDA   RDATA,X
  320.           CMP   #'0
  321.           BEQ   RETPROG    TO RETURN TO MAIN STREAM
  322.           LDA   #'R        AND TURN OFF RIT DISPLAY
  323.           JSR   DISLET
  324.           LDA   #'I
  325.           JSR   DISLET
  326.           LDA   #'T
  327.           JSR   DISLET
  328.           JMP   SPLIT
  329.  
  330. RETPROG   LDA   #' '       TURNS OFF RIT DISPLAY
  331.           JSR   DISLET
  332.           LDA   #' '
  333.           JSR   DISLET
  334.           LDA   #' '
  335.           JSR   DISLET
  336.  
  337. SPLIT     LDA   #$80                                             
  338.           JSR   WCTRL
  339.           LDX   #32
  340.           LDA   RDATA,X
  341.           CMP   #'0
  342.           BEQ   SPLITOFF
  343.           LDA   #'S
  344.           JSR   DISLET
  345.           LDA   #'P
  346.           JSR   DISLET
  347.           LDA   #'L
  348.           JSR   DISLET
  349.           LDA   #'T
  350.           JSR   DISLET
  351.           JMP   GETREDY
  352.  
  353. SPLITOFF  LDA   #' '       TURNS IT OFF
  354.           JSR   DISLET
  355.           LDA   #' '
  356.           JSR   DISLET
  357.           LDA   #' '
  358.           JSR   DISLET
  359.           LDA   #' '
  360.           JSR   DISLET
  361.           LDA   #$C5
  362.           JSR   WCTRL
  363.           LDX   #8
  364. BLANKSPLT LDA   #' '
  365.           JSR   DISLET
  366.           DECX
  367.           BNE   BLANKSPLT
  368.           LDA   #$8B
  369.           JSR   WCTRL
  370.           LDA   #' '
  371.           JSR   DISLET
  372.           LDA   #' '
  373.           JSR   DISLET
  374.  
  375.           LDX   #30        LOADS VFO BYTE
  376.           LDA   RDATA,X
  377.           STA   VFO
  378.           
  379.           JMP   GETREDY
  380.  
  381. WCTRL     STX  TEMPX      SAVE X                              
  382.           STA  PORTB      WRITE CONTROL WORD TO BUS          
  383.           BCLR 1,PORTA    SET R/W TO WRITE          
  384.           BCLR 2,PORTA    SET RS TO CONTROL          
  385.           BSET 0,PORTA    ENABLE ON          
  386.           BCLR 0,PORTA    ENABLE OFF          
  387.           LDX  #$07       ]          
  388. DELAY2    DECX            ]       DELAY          
  389.           BNE  DELAY2     ]        FOR          
  390.           CMP  #$02       ]       CONTROL          
  391.           BHI  DELAY4     ]       (42uS)  
  392.            
  393. DELAY3    DECX            XTRA DELAY, FOR CMDS 1&2 
  394.           BNE  DELAY3      (1.644 mS)
  395.           LDX  #$12        
  396. MORE      DECX            
  397.           BNE  MORE
  398. DELAY4    LDX  TEMPX      RESTORE INDEX REGISTER         
  399. ENDCTRL   RTS             RETURN FROM SUBROUTINE         
  400.   
  401.                             
  402.   
  403. DISLET    STX   TEMPX     SAVE INDEX REGISTER         
  404.           STA   PORTB     PUT CHARACTER ON BUS         
  405.           BCLR  1,PORTA   SET R/W TO WRITE         
  406.           BSET  2,PORTA   SET RS TO DATA         
  407.           BSET  0,PORTA   TURN ON ENABLE  
  408.           BCLR  0,PORTA   ENABLE OFF         
  409.           LDX   #$07      ]       DELAY 42 uS         
  410. DELAY1    DECX            ]       ASSUMING 1 uS          
  411.           BNE   DELAY1    ]       CLOCK         
  412.           LDX   TEMPX     RESTORE INDEX REGISTER           
  413.           RTS             RETURN FROM SUBROUTINE         
  414.  
  415.   
  416. INIT      LDA  #$38      SET 8-BIT, 2-LN, 5X7            
  417.           JSR  WCTRL 
  418.           LDA  #$1       CLEAR DSPLY, ADR CNTR 
  419.           JSR  WCTRL          TO ZERO 
  420.           LDA  #$C       DSPLY ON, CSR OFF 
  421.           JSR  WCTRL        
  422.           LDA  #$6       ENTRY MODE, SHIFTS CSR 
  423.           JSR  WCTRL       TO RIGHT ON WRITES 
  424.           RTS            RETURN FROM SUBROUTINE                
  425.   
  426.       
  427. DLY50     STA  TEMPA     |        
  428.           LDA  #32       |        
  429. OUTRLP    CLRX           |        
  430.   
  431. INLP      DECX           |          
  432.           BNE  INLP      |        
  433.           DECA           |        
  434.           BNE  OUTRLP    |        
  435.           LDA  TEMPA     |         
  436.           RTS                                                   
  437.   
  438. LCDLY     STX  TEMPX     SAVE X        
  439.   
  440.           LDA  #15       : (DELAY UNTIL LCD READY) 
  441. OUTLP     CLRX           :  X USED AS INNER LOOP 
  442. INNERLP   DECX           :     COUNTER...
  443.           BNE  INNERLP   :  6CYC*256*1uS=1.536ms        
  444.           DECA        
  445.           BNE  OUTLP     :  15*1.536ms=23.04ms DLY         
  446.           LDX  TEMPX     RESTORE X        
  447.           RTS            RETURN FROM SUBROUTINE        
  448.   
  449.      
  450.   
  451.           ORG  $1FFE     PROVIDING RESET VECTOR                 
  452.           FDB  DDREX     WITH THESE TWO LINES... 
  453.